package collection;

import org.junit.Test;

import java.util.*;

/**
 * @description: TODO 类描述
 * @author: apple
 * @date:  2021/12/23 10:36 下午
 * @version 1.0
 **/
public class MapTest {

    /*
    * ----Map接口：双列集合，用来存储一对（key,value）数据
           |----HashMap、作为Map主要的实现类，线程不安全，效率高，存储null和key，value
           		|----LinkedHashMap、在原来HashMap底层基础上，增加了指针指向前面一个和后面一个
           |----TreeMap、保证按照key-value进行排序，实现排序遍历。
           |----Hashtable、不能存储null，1.0版本那会的
                |----Properties 常用来处理配置文件，k和v都是String

           HashMap底层：数组+链表 （1.7及之前）
           *           数组+链表+红黑树（1.8）
    *
    * */

    @Test
    public void test1() {
        Map<String,String> m = new HashMap<>();
        m.put("a","张三");
        m.put("b","李四");

        // 遍历key
        Set<String> strings = m.keySet();
        Iterator<String> iterator = strings.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next() + "\t");
        }


        // 变量values
        Collection<String> values = m.values();
        Iterator<String> iterator1 = values.iterator();
        while (iterator1.hasNext()) {
            System.out.println(iterator1.next());
        }

        // entry
        Set<Map.Entry<String, String>> entries = m.entrySet();
        Iterator<Map.Entry<String, String>> iterator2 = entries.iterator();
        while (iterator2.hasNext()) {
            Map.Entry<String, String> next = iterator2.next();
            System.out.println(next.getKey() + "\t" + next.getValue());

        }



    }
}
